using System.Collections.Generic;

namespace Sustainalytics.Utils.Validation.Interfaces
{
    public interface IValidator<in T>
    {
        bool IsValid(T entity);
        ICollection<string> BrokenRules(T entity);
    }
    public interface IValidatable<out T>
    {
        bool Validate(IValidator<T> validator, out IEnumerable<string> brokenRules);
    }


    public interface IValidator<in T, in TK>
    {
        bool IsValid(T entity, TK entityAgainstValidate);
        ICollection<string> BrokenRules(T entity, TK entityAgainstValidate);
    }

}